home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / commodore-users-of-norman / CUON_06_(08-1984).d64 / single file copy (.txt) < prev    next >
Commodore BASIC  |  2019-04-13  |  5KB  |  195 lines

  1. 10 POKE 53281,0:PRINT"[158][147]":POKE 53280,2
  2. 15 PRINT"[206][205]SINGLE FILE COPY[205][206]"
  3. 16 PRINT" MODIFIED BY:"
  4. 17 PRINT"[158]>BRUCE LYNN &"
  5. 18 PRINT">MIKE FULLMER"
  6. 20 REM SINGLE DRIVE FILE COPY
  7. 30 REMEMBER!! THIS PROGRAM WAS VASTLY      MODIFIED BY BRUCE LYNN ON 10/06/83
  8. 35 REMEMBER!! ALSO BY MIKE FULLMER ON      10/10/83
  9. 40 POKE52,31:POKE56,31:CLR
  10. 45 FORI=0TO173
  11. 50 READD:POKE7936+I,D:NEXT
  12. 55 POKE785,0:POKE786,31
  13. 60 PL$=CHR$(19)
  14. 65 FORI=1TO24:PL$=PL$+CHR$(17):NEXT
  15. 70 FORI=1TO39:CL$=CL$+" ":NEXT
  16. 75 CL$=CL$+CHR$(13)+CL$+CHR$(13)
  17. 80 CL$=LEFT$(PL$,21)+CL$+CHR$(145)
  18. 85 OPEN15,8,15:REM OPEN ERROR CHANNEL
  19. 90 GOTO1010
  20. 100 :
  21. 110 REM READ THE DIRECTORY
  22. 130 POKE785,0:REM SELECT READ FUNCTION
  23. 140 PRINT#15,"I":OPEN2,8,2,"$"
  24. 150 NB=USR(2):REM LOAD DIR INTO MEMORY
  25. 160 CLOSE2:GOSUB800:REM CHECK ERROR
  26. 170 RETURN
  27. 200 :
  28. 210 REM DISPLAY DISK NAME
  29. 230 POKE785,6:REM SELECT FETCH CHAR
  30. 240 PRINT"[156]"LEFT$(PL$,3);CHR$(18);
  31. 250 FORK=142TO169
  32. 260 PRINTCHR$(USR(K));:NEXT
  33. 270 PRINTCHR$(146)"[158]"
  34. 280 RETURN
  35. 300 :
  36. 310 REM PRINT DIRECTORY ENTRY DE
  37. 330 POKE785,6:REM SELECT FETCH CHAR
  38. 340 IX=(DE-1)*32+254-INT((DE-1)/8)*2
  39. 345 IFUSR(IX)<128THENRETURN
  40. 350 TY=USR(IX)-128:IFTY=0ORTY>3THENRETURN
  41. 360 FOR K=IX+3 TO IX+18
  42. 370 PRINTCHR$(USR(K));
  43. 380 NEXT:PRINTTAB(16);",";
  44. 390 PRINTMID$("SPU",TY,1),",";:A$=STR$(USR(IX+28)+256*USR(IX+29)):A$=MID$(A$,2)
  45. 395 PRINTA$"   ":RETURN
  46. 400 :
  47. 410 REM GET DESTINATION DISK
  48. 430 PRINTCL$;
  49. 440 PRINT"INSERT DESTINATION[158] DISK."
  50. 450 PRINT"PRESS ";CHR$(18);"RETURN";
  51. 460 PRINTCHR$(146);" WHEN READY."
  52. 470 GETDM$:IFDM$=""THEN470
  53. 480 IFDM$<>CHR$(13)GOTO470
  54. 490 PRINT#15,"UI":PRINT#15,"I":RETURN
  55. 500 :
  56. 510 REM GET A FILE TO COPY
  57. 530 PRINTCL$;:IFEN=63GOTO580
  58. 540 IFUE=128THENPRINTNM$;" TOO LARGE.";
  59. 550 IFEN=62THENPRINTNM$;" NOT FOUND.";
  60. 560 PRINT"[153]MOVE CURSOR ON FILE TO COPY":L3$="":EN=0:UE=0
  61. 570 NM$="":INPUTNM$,TY$,L3$::PRINT"[158]"
  62. 572 IF L3$="F"THEN PRINT"[145][145][145]";:GOSUB 30030:PRINT"[145][145]":GOTO 560
  63. 575 RETURN
  64. 580 PRINTNM$;" EXISTS.":PRINT"ENTER NEW NAME";
  65. 590 EN=0:NM$="":INPUT NM$:RETURN
  66. 600 :
  67. 610 REM READ THE FILE
  68. 630 POKE785,0:REM SELECT READ FUNCTION
  69. 640 OPEN2,8,2,"0:"+NM$+","+TY$+",R"
  70. 650 GOSUB900:IFEN<>0THENCLOSE2:RETURN
  71. 660 NB=USR(2):REM READ THE FILE
  72. 670 CLOSE2:GOSUB800:REM CHECK RESULTS
  73. 680 RETURN
  74. 700 :
  75. 710 REM WRITE THE FILE
  76. 730 POKE785,3:REM SELECT WRITE FUNCTION
  77. 740 OPEN2,8,2,NM$+","+TY$+",W"
  78. 750 GOSUB900:IFEN<>0THENCLOSE2:RETURN
  79. 760 NB=USR(2):REM WRITE THE BYTES
  80. 770 CLOSE2:GOSUB800:REM CHECK RESULTS
  81. 780 RETURN
  82. 800 :
  83. 810 REM CHECK USR() RETURN VALUE
  84. 830 NB=NB-(NB<0)*65536
  85. 840 IFNB<61440THENUE=0:RETURN
  86. 850 IFNB=61440THENUE=128:RETURN
  87. 860 PRINTCL$;
  88. 870 IFPEEK(785)=0THENPRINT"READ";
  89. 880 IFPEEK(785)=3THENPRINT"WRITE";
  90. 890 PRINT" ERROR #";NB-61440:END
  91. 900 :
  92. 910 REM READ ERROR CHANNEL
  93. 940 INPUT#15,EN,EM$,ET,ES
  94. 950 IFEN=0OREN=62OREN=63OREN=74THENRETURN
  95. 960 CLOSE15:PRINTCL$
  96. 970 PRINT"DISK ERROR #";EN
  97. 980 PRINTLEFT$(PL$,22);EM$:END
  98. 1000 :
  99. 1010 REM MAIN ROUTINE
  100. 1030 PRINTCHR$(147);:REM CLEAR SCREEN
  101. 1040 PRINT"       [154]<<SINGLE DRIVE FILE COPY[154]>>"
  102. 1050 PRINT:PRINT"[153]==>READING DIRECTORY[158]"
  103. 1060 GOSUB110:REM READ THE DIR
  104. 1070 GOSUB210:REM DISPLAY TITLE
  105. 1080 NS=INT((NB+1)/254)
  106. 1090 IFNS=1GOTO4010:REM NO FILES
  107. 1100 DS=1
  108. 1110 IFNS<=DSTHENDS=1:REM START OVER
  109. 1120 PRINTLEFT$(PL$,4)
  110. 1130 BE=(DS-1)*8:LE=BE+15
  111. 1140 IFDS+1=NSTHENLE=BE+8
  112. 1150 FOR DE=BE TO LE
  113. 1160 GOSUB310:NEXT:REM DISPLAY FILES
  114. 1170 FORI=PEEK(214)TO20:REM CLEAR
  115. 1180 PRINT"                                       "
  116. 1190 NEXT
  117. 1200 GOSUB510:REM GET FILE NAME
  118. 1210 IFNM$=""THENDS=DS+2:GOTO1110
  119. 2010 REM COPY THE FILE
  120. 2030 PRINTCL$;
  121. 2040 PRINT"READING ";NM$
  122. 2045 PRINT"                                     "
  123. 2050 GOSUB610:REM READ THE FILE
  124. 2060 IFEN=62 OR UE=128 GOTO 1200
  125. 2070 BC=NB:REM SAVE COUNT
  126. 2080 GOSUB410:REM GET DEST. DISK
  127. 2090 PRINTCL$;" WRITING ";NM$:PRINT"                            "
  128. 2100 GOSUB710:REM WRITE THE FILE
  129. 2110 IFEN=0GOTO3010
  130. 2120 GOSUB510:REM GET NEW FILE
  131. 2130 IFNM$<>""GOTO2090
  132. 2140 PRINTCL$;" FILE NOT COPIED"
  133. 2150 GOTO3100
  134. 3010 REM DISPLAY COMPLETION STATUS
  135. 3030 PRINTCL$;
  136. 3040 IFNB<>BCGOTO3060
  137. 3050 GOSUB 30030:PRINT"COPY SUCCESSFUL.  ";:GOTO3070
  138. 3060 PRINT"ERROR. ONLY ";NB;" OUT ";
  139. 3070 PRINTBC;"BYTES COPIED."
  140. 3100 PRINT"PRESS ";CHR$(18);
  141. 3110 PRINT" RETURN";CHR$(146);
  142. 3120 PRINT" TO COPY ANOTHER FILE"
  143. 3130 GETDM$:IFDM$=""THEN3130
  144. 3140 IFDM$=CHR$(13)THEN1000
  145. 3150 END
  146. 4010 REM NO FILES ERROR HANDLING
  147. 4030 PRINTLEFT$(PL$,21);
  148. 4040 PRINT"NO FILES ON THIS DISK."
  149. 4050 PRINT"PRESS ";CHR$(18);" RETURN ";CHR$(146);" TO TRY ANOTHER DISK."
  150. 4070 GETDM$:IFDM$=""THEN4070
  151. 4080 IFDM$=CHR$(13)THEN1000
  152. 4090 END
  153. 10000 DATA76,15,31,76,88,31,76,154
  154. 10010 DATA31,108,3,0,108,5,0,32
  155. 10020 DATA9,31,152,170,32,198,255,168
  156. 10030 DATA176,57,169,0,133,251,169,32
  157. 10040 DATA133,252,160,0,32,207,255,145
  158. 10050 DATA251,230,251,208,2,230,252,165
  159. 10060 DATA144,208,13,165,252,201,160,144
  160. 10070 DATA235,32,204,255,160,0,240,19
  161. 10080 DATA164,144,32,204,255,192,64,208
  162. 10090 DATA10,164,251,165,252,56,233,32
  163. 10100 DATA76,12,31,169,240,76,12,31
  164. 10110 DATA32,9,31,152,170,32,201,255
  165. 10120 DATA168,176,240,165,251,141,174,31
  166. 10130 DATA165,252,141,175,31,169,0,133
  167. 10140 DATA251,169,32,133,252,160,0,177
  168. 10150 DATA251,32,210,255,164,144,208,20
  169. 10160 DATA230,251,208,2,230,252,165,252
  170. 10170 DATA205,175,31,144,234,165,251,205
  171. 10180 DATA174,31,144,227,32,204,255,76
  172. 10190 DATA73,31,32,9,31,132,251,24
  173. 10200 DATA105,32,133,252,160,0,177,251
  174. 10210 DATA168,169,0,76,12,31
  175. 20000 TL=0:FORI=0TO173
  176. 20010 TL=TL+PEEK(7936+I)
  177. 20020 T=INT((I+1)/8)*8-1
  178. 20030 IFT=ITHENPRINTTL:TL=0
  179. 20040 NEXTI:PRINTTL
  180. 30000 INPUT#15,E,E$,E1,E2
  181. 30010 IFE=0THENE=(ST AND 191):E$="*ST*"
  182. 30020 RETURN
  183. 30030 OPEN1,8,0,"$0:"
  184. 30040 GOSUB30000:IFETHENSTOP:GOTO860
  185. 30050 GOSUB30100:GOSUB30100
  186. 30060 Q=Q+1:GET#1,X$:IFX$<>""GOTO30060
  187. 30070 GOSUB30100
  188. 30080 PRINT"                           [145]"
  189. 30082 L=X+Y*256:PRINT"--->";L;"BLOCKS FREE <---[158][145][145][145]"
  190. 30090 CLOSE1:PRINT#15,"I":RETURN
  191. 30100 GET#1,X$:GET#1,X$:GET#1,X$
  192. 30130 X=LEN(X$):IFXTHENX=ASC(X$)
  193. 30140 GET#1,X$:Y=LEN(X$):IFYTHENY=ASC(X$)
  194. 30150 RETURN
  195.